1 - מבחן codility
קבלתי שיחת טלפון מראש צוות, הסביר על החברה ועל הצוות, וקבענו ראיון.
לא קבלתי מייל פורמלי עבור הראיון
לפני הראיון בכמה דקות נשלח לי לינק לזום
שאלות מתוך הראיון
3 שאלות
1. להוסיף פעולת min על כל פעולות המחסנית, כך שפעולת MIN תמצא את האיבר המינימלי עד עכשיו במחסנית ב O(1) , ניתן להשתמש דרך 2 מחסניות .
תשובות
הוסף תשובה
|
לצפיה בתשובות
אפריל 2021
הייתי מוסיף לכל איבר במחסנית את האיבר המינימלי עד אליו. (בהוספת איבר חדש ניקח נבדוק אם הוא קטן ממי שהיה מינימלי עד אליו)
אם אסור לשנות את הנתונים במחסנית אז באמת 2 מחסניות כשכל push או pop במחסנית הראשית אני עושה גם push או pop במחסנית העזר. את push של מחסנית העזר הייתי מגדיר כך שאני מוסיף את האיבר הקטן מבין מה שעכשיו בראש מחסנית העזר לבין הערך שהוספתי למחסנית הראשית.
כולל ארבעה ראיונות - שלוש שאלות בקודיליטי שצריך לפתור תוך שעתיים, ראיון עם ראש צוות, ראיון עם מנהל מחלקה, ולבסוף משאבי אנוש.
שאלות מתוך הראיון
שאלות מראיון שני עם ראש הצוות.
שאלה אחת: מוסיפים בראש כל פונקציה קריאה לפונקציה X כלשהיא שצריך לממש. הפונקציה הזאת צריכה לעשות logging של הכניסה לפונקציה והיציאה ממנה, כאשר יכול להיות שיש מספר return statements, ואסור להוסיף קריאה לפונקציה לפניהן. נתון של preprocessor יש מאקרו עם שם הפונקציה שמתקמפלת כרגע.
שאלה שנייה: נתונות לך שתי פונקציות – אחת דורכת טיימר ל X שניות מעכשיו שיקרא לפונקציה Y חסרת פרמטרים, והשנייה קוראת את הזמן הנוכחי. הבעיה שלטיימר אין זיכרון, ולכן אם קוראים לפונקציה הראשונה פעם שנייה לפני זמן ביצוע הפונקציה, הוא ישכח ממנה. בהנחה שהקוד סדרתי, שלוקח אפס זמן לבצע פונקציה כלשהיא, ואפשר להחביא את הפונקציה הראשונה מאחורי הפתרון שלך באופן פלאי, כיצד תממש טיימר עם זיכרון, שיכול לקרוא בכל זמן נתון למספר כלשהוא של פונקציות.
תשובות
הוסף תשובה
|
לצפיה בתשובות
מרץ 2021
פתרון לשאלה ראשונה: הפתרון הוא ליצור את ה logger כגלובלי, ושהפונקציה X היא macro שנפתח לקריאה ל logger לרשום כניסה עם שם הפונקציה, ויוצר משתנה על המחסנית ששומר ב ctor את שם הפונקציה, וקורא מה dtor לקריאה ל logger לרשום יציאה עם שם הפונקציה.
תשובה לשאלה שנייה: להחזיק vector, נקרא לו timeline, של איברים שכל אחד מהם הוא זמן מערכת בו צריך לקרוא לפונקציה + vector של פונקציות שצריך לקרוא להן באותו זמן.
פונקציה אחת תיקח x שניות מעכשיו + שם פונקציה, ותוסיף אותו ל vector במקום הנכון (לחפש את ה now + x שניות, אם אין להוסיף איבר באמצע, ואז להוסיף את הפונקציה) ותדרך את הטיימר לזמן המוקדם במערך פחות עכשיו לפונקציה שנייה.
כשהפונקציה השנייה נקראת, היא תקרא לכל הפונקציות באיבר הראשון של timeline, תמחק אותו מהמערך, ואם הוא לא ריק, תדרך את הטיימר לזמן המוקדם במערך פחות עכשיו לעצמה.
עוסקת בפיתוח תוכנה לאבטחת מידע - תוכנות חומת אש ו־VPN.בסיסה הבינלאומי נמצא ברדווד סיטי, קליפורניה, ומרכזי הפיתוח נמצאים בתל אביב ובבלארוס.החברה נוסדה בשנת 1993 על ידי שלמה קרמר, מריוס נכט וגיל שוויד.